<?php
require_once 'AdminController.php';
/**
 * 
 * Classe referente aos links do site
 * @author Ramon Moraes
 *
 */
class Links extends AdminController{
	
	/**
	 * 
	 * Construtor da classe
	 * @access public
	 * @method __construct
	 */
	public function __construct(){
		
		parent::__construct();
	}
	
	/**
	 * Função padrão, carrega a view da controller genérica
	 * @see AdminController::index()
	 */
	public function index(){
		
		parent::index(strtolower($this->router->fetch_class()));
	}
	
	/**
	 * 
	 * Função para carregar página de cadastrar links
	 * @access public
	 * @method cadastro
	 */
	public function cadastro($pag = 1, $limit = 10){
		
		if(!$this->isLogged()){
			redirect('admin/administradores/login');
		}
		
		$indices = array(
			'Id',
			'Título',
			'Link'
		);
		
		$lin = new Link();
		$lin->order_by('id', 'desc')->get($limit, ($pag - 1) * $limit);
		
		$dados = array();
		foreach($lin->all as $l){
			$dados[] = $l->getArrayDadosAdmin();
		}
		
		$l2 = new Link();
		$total = $l2->where('flag', 'ATIVO')->count();
		$numPaginas = ceil($total / $limit);
		if($numPaginas == 0){
			$numPaginas = 1;
		}
		
		$paginacao = array(
			'paginaAtual'		=> $pag,
			'itensPorPagina'	=> $limit,
			'totalPaginas'		=> $numPaginas,
			'link'				=> 'admin/' . $this->router->fetch_class() . '/' . $this->router->fetch_method() . '/'
		);
		
		$this->setData('colunas', $indices);
		$this->setData('linhas', $dados);
		$this->setData('paginacao', $paginacao);
		
		$this->loadView('admin/links/index');
	}
	
	/**
	 * 
	 * Função para exluir um link
	 * @param int $id
	 * @access public
	 * @method excluir
	 */
	public function excluir($id){
		$lin = new Link();
		$lin->where('id', $id)->get();
		$lin->delete();
		redirect('admin/links');
	}
	
	/**
	 * 
	 * Função para salvar um link
	 * @param int $id
	 * @access public
	 * @method salvar
	 */
	public function salvar($id=null){
		
		if(isset($_POST['titulo']) && $_POST['titulo'] != '' && isset($_POST['link']) && $_POST['link'] != ''){
			$lin = new Link();
			
			if($id != null){
				$lin->where('id', $id)->get();
			}

			$lin->titulo = $_POST['titulo'];
			$lin->link = $_POST['link'];
			
			$lin->save();
			redirect('admin/links/cadastroSucesso');
		}
		redirect('admin/links/cadastroErro');
	}
	
	/**
	 * 
	 * Função para o caso de sucesso na inserção ou alteração de um registro
	 * @access public 
	 * @method cadastroSucesso
	 */
	public function cadastroSucesso(){
		
		$this->setData('cadastroSucesso', true);
		$this->cadastro();
	}
	
	/**
	 * 
	 * Função para o caso de erro na inserção ou alteração de um registro
	 * @param String $erro
	 * @access public
	 * @method cadastroErro
	 */
	public function cadastroErro($erro=null){
		
		$this->setData('cadastroSucesso', false);
		$this->cadastro();
	}
	
}